let fs = require('fs');
// 顺序一定不会错误
let p1 = new Promise(function (resolve, reject) {
  fs.readFile('./files/a.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err); // 失败的调用
    }
    resolve(data); // 成功的调用
  })
});

let p2 = new Promise(function (resolve, reject) {
  fs.readFile('./files/b.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err); // 失败的调用
    }
    resolve(data); // 成功的调用
  })
});

let p3 = new Promise(function (resolve, reject) {
  fs.readFile('./files/c.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err); // 失败的调用
    }
    resolve(data); // 成功的调用
  })
});

p1.then(
  function (data) {
    console.log(data);
    // 当p1读取成功的时候
    // 当前函数中return的结果就可以在后面的then中function接收到
    // 当return的是123的时候，后面就接收的是123.那么return的是p2，自然接收的是p2
    // return的数据其实没有什么限制，也没有什么用，
    // 关键有用的是：我们可以return一个Promise对象来进行then方法操作
    // 当return一个Promise对象的时候，后续的then中的方法的第一个参数会作为p2的resolve函数
    return p2
  },
  function (err) {
    console.log(err);
  }
).then(
  function (data) {
    console.log(data);
    return p3
},function (err) {
  console.log(err);
}
).then(
  function (data) {
    console.log(data);
  },
  function (err) {
    console.log(err);
  }
)